約 4,528,549 件
https://w.atwiki.jp/c0metssd/pages/47.html
public String download() throws SQLException, IOException { List UserBean list = getUsers(); // ユーザ一覧を取得するメソッド呼び出し StringBuilder sb = new StringBuilder(); sb.append("name,age,password\r\n"); for (UserBean bean list) { sb.append(bean.getName()); sb.append(","); sb.append(bean.getAge()); sb.append(","); sb.append(bean.getPassword()); sb.append("\r\n"); } String csvfile = "user.csv"; FacesContext facesContext = FacesContext.getCurrentInstance(); ExternalContext externalContext = facesContext.getExternalContext(); externalContext.setResponseContentType("csv/plain;charset=UTF-8"); externalContext.setResponseHeader("Content-Disposition", "attachment;filename=" + csvfile); externalContext.setResponseCharacterEncoding("UTF-8"); externalContext.getResponseOutputWriter().write(sb.toString()); facesContext.responseComplete(); return ""; }
https://w.atwiki.jp/fumiduki1985/pages/290.html
csvモジュールを使用すると可能。 このモジュールは、セル内に改行や空白、カンマ、ダブルクォートを含むcsvの面倒なケースにも対応している。 ただし、Python 2.7でのcsvモジュールはUnicode文字列をサポートしておらず、ASCII以外の文字の入出力に問題がある模様。 この問題の回避は、Pythonのマニュアルにも記述がある。 →https //docs.python.org/ja/2.7/library/csv.html 記述例: import csv # csvの書き出し with open( myCsvFile.csv , w ) as f writer = csv.writer(f, lineterminator= \n ) writer.writerow([ item1-1 , item1-2 , item1-3 ]) writer.writerow([ item2-1 , item2-2 , item2-3 ]) writer.writerow([ item3-1 , item3-2 , item3-3 ]) # csvの読み込み with open( myCsvFile.csv , r ) as f reader = csv.reader(f) for row in reader print , .join(row) このページのタグ一覧 Python プログラミング
https://w.atwiki.jp/hayeong/pages/60.html
The first row of the data file should contain the column names. #Data Frame Hight, Weight 170, 45 158, 50 165, 55 #Import data from CSV myData -read.table("c //data.csv",sep=",")
https://w.atwiki.jp/shisaku0017/pages/19.html
CSVに対応しているフリーウェア一覧 amCharts jQuery Sparklines jqPlot pChart 登録タグ 仕様 利用可能データ形式
https://w.atwiki.jp/shoyofilms/pages/26.html
html head style body{ display flex; margin 0; } nav.csv_list{ min-width 170px; padding 10px; overflow auto; border-right 1px solid #000; } nav.csv_list ul{ list-style none; padding 0; } section.data{ overflow auto; padding 0 5px; } table { border 1px solid #000; } th, td{ border 1px solid #000; padding 0; } th input{ font-weight bold; } td input{ display inline; } nav.control{ margin-bottom 20px; /*display block;*/ } /style /head body nav class="csv_list" h2 CSV一覧 /h2 ul ?php $files = glob('*.csv'); foreach ($files as $key = $value) { echo " li a href='?open=".$value."' ".$value . ' /a /li '; } ? /nav section class="data" ?php if(isset($_REQUEST["open"]) file_get_contents($_REQUEST["open"])){ $file_name = $_REQUEST["open"]; $file = null; #データべースのファイルポインタ $is_indexed=false; $row; $column_name = []; $column_id=0; $row_num=0; echo " h2 {$file_name} /h2 nav class='control' button id='apply' 反映 /button button id='addleft' disabled 左に追加 /button button id='addright' disabled 右に追加 /button button id='addup' disabled 上に行追加 /button button id='deleterow' disabled 行削除 /button button id='adddown' disabled 下に行追加 /button /nav table id='data_table' "; if(file_exists($file_name)){ $file=fopen($file_name,"r"); while($row = fgetcsv($file)){ #データベースの列名変数を設定 if($is_indexed===false){ echo " tr td /td "; foreach($row as $r= $i){ ${"r_".$i} = $r; array_push($column_name,$i); echo " th input type='text' value='".$i."' id='h".$r."' class='select_column' /th "; } echo " /tr "; $column_num = $r+1; $is_indexed=true; }else{ echo " tr td class='select_row' id='r".$row_num."' 選 /td "; foreach($column_name as $c= $i){ $column_id = ${"r_".$i}; echo " td input type='text' value='".$row[$column_id]."' id='c".$row_num." ".($c+1)."' /td "; } echo " /tr "; } $row_num++; } echo " /table "; } } ? /section script const row_num= ?php echo $row_num; ? ; const column_num= ?php echo $column_num; ? ; let selected_row=""; let selected_column=""; button_addleft = document.getElementById("addleft"); button_addright = document.getElementById("addright"); button_addup = document.getElementById("addup"); button_deleterow = document.getElementById("deleterow"); button_adddown = document.getElementById("adddown"); data_table = document.getElementById("data_table"); button_addup.addEventListener("click", function() { const add_pos = parseInt(selected_row.substr(1)); var p = data_table.children[0].children; var q = data_table.children[0].children[1].cloneNode(true); console.log(q); data_table.children[0].children[add_pos].before(q); }); button_deleterow.addEventListener("click", function() { const del_pos = parseInt(selected_row.substr(1)); var aa = data_table.deleteRow(del_pos); console.log(del_pos, aa); }); button_adddown.addEventListener("click", function() { const add_pos = parseInt(selected_row.substr(1)); var p = data_table.children[0].children; var q = data_table.children[0].children[1].cloneNode(true); data_table.children[0].children[add_pos].after(q); }); button_addleft.addEventListener("click", function() { const add_pos = parseInt(selected_column.substr(1)); var aa = data_table.deleteRow( 1 ); console.log(add_pos, aa); }); function select_reset(){ var p = data_table.children[0].children; for(i=0; i p.length; i++){ p[i].children[0].style.backgroundColor = "#fff"; } for(i=0; i columns.length; i++){ columns[i].style.backgroundColor = "#fff"; } button_addleft.setAttribute("disabled",""); button_addright.setAttribute("disabled",""); button_addup.setAttribute("disabled",""); button_deleterow.setAttribute("disabled",""); button_adddown.setAttribute("disabled",""); } const rows = document.getElementsByClassName("select_row"); const trs = document.getElementsByTagName("tr"); for(i=0; i rows.length; i++){ rows[i].addEventListener("click", function() { select_reset(); this.style.backgroundColor = "#ff0"; tr_list = [].slice.call(trs); selected_row=tr_list.indexOf(this.parentNode); button_addup.removeAttribute("disabled"); button_deleterow.removeAttribute("disabled"); button_adddown.removeAttribute("disabled"); }); } const columns = document.getElementsByClassName("select_column"); const ths = document.getElementsByTagName("th"); for(i=0; i columns.length; i++){ columns[i].addEventListener("click", function() { select_reset(); this.style.backgroundColor = "#ff0"; th_list = [].slice.call(ths); selected_row=th_list.indexOf(this.parentNode); selected_column=this.id; button_addleft.removeAttribute("disabled"); button_addright.removeAttribute("disabled"); }); } document.getElementById("apply").addEventListener("click", function() { let csvtext = ""; for(c=0; c column_num; c++){ csvtext += document.getElementById("h"+c).value+","; } csvtext+="\r\n"; var p = data_table.children[0].children; for(i=1; i p.length; i++){ for(j=1; j p[i].children.length; j++){ csvtext += p[i].children[j].children[0].value +","; } csvtext+="\r\n"; } ////////////////////CSV形式へ変換//////////////////// // BOMを付与(Excelで開いた際のの文字化け対策) const bom = new Uint8Array([0xef, 0xbb, 0xbf]); // CSV用バイナリデータを作成 const blob = new Blob([bom, csvtext], { type "text/csv" }); // blobからオブジェクトURLを作成 const objectUrl = URL.createObjectURL(blob); ////////////////////ダウンロードリンクの作成とクリック//////////////////// // ダウンロードリンクを作成 ※HTMLのaタグを作成 const downloadLink = document.createElement("a"); // ファイル名の設定 const fileName = "sample.csv"; downloadLink.download = fileName; // ダウンロードファイルを設定 ※aタグのhref属性 downloadLink.href = objectUrl; // ダウンロードリンクを擬似的にクリック downloadLink.click(); // ダウンロードリンクを削除 downloadLink.remove(); }); /script /body /html
https://w.atwiki.jp/chapati4it/pages/143.html
サーブレットから直接CSVファイルをダウンロードするサンプルです。 配列の内容をCSV出力するだけの簡単なサンプルです。 お仕事では、データベースの検索キーなどをパラメータで受け取って、検索結果をCSV出力する事が多いと思います。 そんなサンプルもそのうち作ろうと思います。 日本語ファイル名対応はこちら → 日本語ファイル名対応のCSV出力サンプル ファイルの配置 /CONTEXT_ROOT ┣ WEB-INF ┃┣ src ┃┃┗ DynamicCsvServlet.java ┃┗ web.xml ┗ jsp ┗ dynamic_csv.jsp DynamicCsvServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class DynamicCsvServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // POSTメソッドでアクセスが来てもGETメソッドで全部処理します。 doGet(req, resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // CSV出力用データ String[][] rows = { { "0", "ダイナミック", "dynamic@example.com" }, { "1", "ホゲ", "hoge@example.com" }, { "2", "モゲ", "moge@example.com" }, { "3", "マゲ", "mage@example.com" }, { "4", "フゥ", "foo@example.com" }, { "5", "バァ", "bar@example.com" }, { "6", "グゥ", "goo@example.com" } }; // 文字コード設定 resp.setContentType("text/html; charset=UTF-8"); // ファイル名設定(ファイル名を設定しないと、htmlとして画面に表示されてしまいます resp.setHeader("Content-Disposition", "attachment; filename=\"dynamic.csv\""); // CSVデータ作成 StringBuffer sb = new StringBuffer(); for (String[] row rows) { for (int i = 0; i row.length; i++) { if (i == 0) { sb.append("\""); } else { sb.append("\",\""); } sb.append(row[i]); if (i == row.length - 1) { sb.append("\"\n"); } } } // レスポンスにCSV出力 PrintWriter w = resp.getWriter(); w.print(sb.toString()); w.flush(); } } アクセスされると、ファイルではなくHttpServletResponseに直接CSVを出力するサーブレットです。 CSVダウンロードのために、文字コード、ファイル名を設定しています。 HttpServletResponseにファイル名とコンテンツ(CSV文字列)を与える事で、ブラウザはCSVファイルのダウンロードだと認識します。 // 文字コード設定 resp.setContentType("text/html; charset=UTF-8"); ここで、出力するCSVの文字コードを「UTF-8」に指定しています。 他の文字コードにする場合「UTF-8」の部分を修正します。 // ファイル名設定(ファイル名を設定しないと、htmlとして画面に表示されてしまいます resp.setHeader("Content-Disposition", "attachment; filename=\"dynamic.csv\""); ここで、ダウンロードするファイル名を設定しています。 ファイル名を設定しないと、ブラウザにhtmlとしてCSVの文字列が表示されてしまいます。 web.xml ?xml version="1.0" encoding="ISO-8859-1"? web-app xmlns="http //java.sun.com/xml/ns/javaee" xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xsi schemaLocation="http //java.sun.com/xml/ns/javaee http //java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" !-- サーブレットの宣言 -- servlet servlet-name dynamiccsvservlet /servlet-name servlet-class DynamicCsvServlet /servlet-class /servlet !-- サーブレットとurlのマッピング -- servlet-mapping servlet-name dynamiccsvservlet /servlet-name url-pattern /dynamiccsvservlet /url-pattern /servlet-mapping /web-app サーブレットの宣言とURLのマッピングです。 この時点で、Tomcatを起動して「http //localhost 8080/CONTEXT_ROOT/dynamiccsvservlet」にアクセスすると、CSVファイルのダウンロードダイアログが出てくると思います。 ※ブラウザの種類や設定によって動作が違います。 dynamic_csv.jsp %@ page language="java" contentType="text/html; charset=UTF8" pageEncoding="UTF-8" % html body 動的CSVダウンロード(GET): a href= %=request.getContextPath()+"/dynamiccsvservlet"% %=request.getContextPath()+"/csvservlet"% /a br form action= %=request.getContextPath()+"/dynamiccsvservlet"% method= GET input type="submit" value="動的CSVダウンロード(POST)" / /form /body /html 動的にCSVを出力するサーブレットへのリンクとフォームを表示するJSPです。 ブラウザに直接URL入力してもアクセス出来ますが、せっかくだからJSPも用意しました。 request.getContextPath() これは、Webアプリのコンテキストパスを出力してくれるメソッドです。 これに続けてサーブレットマッピングで指定したURLを記入すると、リンククリックやサブミットボタンでサーブレットにアクセス出来るのです。 ブラウザでアクセス 「http //localhost 8080/CONTEXT_ROOT/jsp/dynamic_csv.jsp」にアクセスすると、ダウンロードのリンクが表示されて、リンククリック、ボタンクリックでブラウザのダウンロード処理が動きます。 他のTomcatサンプルはこちら Tomcatサンプル Tomcatメモ Tomcat7.0.37のインストールとeclipseの設定(Windows) サーブレットを作ってみる Tomcat7のインストールとwarファイルのデプロイ(ubunts12.04) warファイルをdotcloudにデプロイ サーブレットからJSPに遷移するサンプル サーブレットからCSVファイルをダウンロードするサンプル サーブレットからCSVファイルをダウンロードするサンプル(日本語ファイル名) サーブレットからファイルをダウンロードするサンプル(日本語ファイル名) Basic認証(UserDatabaseRealm)+DIGEST認証 JFreeChartで動的にグラフを出力するサンプル ファイルをアップロードするサンプル(Commons FileUplaod) クロスサイトスクリプティング脆弱性を体験してみるサンプル コメント 345 - WEE 2015-07-24 14 31 32 WEE - 345 2017-09-07 18 23 17 名前
https://w.atwiki.jp/sevenlives/pages/165.html
CSV 読み:しーえすぷい 英語:Comma Separated Value 意味: 文字データをカンマ「,」で出区切る文書フォーマット形式。 たとえば 名前:山田 住所:東京 電話:03-xxx-xxxx といったデータを格納したいときに 「山田,東京,03-xxx-xxxx」 のように格納される。 メリット: デリミタで区切るという非常に単純なフォーマットなのでデータが軽い。 また、古くからある形式なので対応アプリケーションが多い。 デメリット: 区切り数が最初の数で決まってしまうので後から項目を増やそうとおもっても全てがずれてしまうなど難しい。 2007年03月26日
https://w.atwiki.jp/lyokun/pages/31.html
ASP.NETで、CSVファイルを直接出力し表示させるとUTF-8でエンコードされ文字化けしてしまうのでいったんファイルにShift_JISでエンコードして保存し、ダウンロードすることによって文字化けせずにエクセルで表示することができる。 DataSet ds = new DataSet(); //ds = [データを代入]; // CSV文字列代入用変数 StringBuilder sb = new StringBuilder(); // datasetからカンマ区切りの文字列に変換 foreach (DataRow row in ds.Tables[0].Rows) { for (int i = 0; i ds.Tables[0].Columns.Count; i++) { if (i = 1) { sb.Append(","); } sb.Append(row[i].ToString()); } // 改行 sb.Append("\r\n"); } // ファイル名指定 string strFile = [ファイル名]; // CSVファイルに書き込むときに使うEncoding System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_JIS"); // CSVファイルを保存するために書き込みモードでファイルを開く System.IO.StreamWriter sr = new System.IO.StreamWriter(strFile, false, enc); // フィールドを書き込む sr.Write(sb.ToString()); // 閉じる sr.Close(); // ダウンロードする Response.AppendHeader("Content-Disposition", "attachment; filename=" + strFile); // ダウンロードデータとして設定 Response.ContentType = "application/octet-stream"; byte[] data = File.ReadAllBytes(strFile); Response.BinaryWrite(data); Response.End();
https://w.atwiki.jp/dotcom/pages/120.html
サーバーで作成されたデータファイル(csv)をバックアップしてて思ったこと。 どうやらUTF-8で作ってるみたい。 でもね、Winな開発環境ではMS932で作ってた。 読み込みも同じ。 これ、一緒にしたいよね? デフォルトのエンコードの設定って?MS932(Windous-31J) 読み込む時に文字コードを指定する文字コードを指定しなくていいならFileReader 文字コードを指定するならInputStreamReader 実際にはこんな風に使ってみた 書き込む時に文字コードを指定する文字コードを指定しなくていいなら 文字コードを指定するならOutputStreamWriter 実際にはこんな風に使ってみた デフォルトのエンコードの設定って? ファイルを読み込んだり書き込んだりするときに勝手に使ってくれるデフォルトの文字コードが設定されてるんだって。 それを調べる方法は System.out.println(System.getProperty("file.encoding")); ってするとコンソールにでてくるぜよ。 うちの開発環境での「MS932」 ってなんだろ?(無知 MS932(Windous-31J) そんなときにはうぃきぺでぃあ http //ja.wikipedia.org/wiki/Windows-31J またびるげいつですか。。。 まてよ。 Windous-31Jってよく目にするわ。 JSPで文字コードの設定とかするときばしばし見かけますなあ。 シフトJISの拡張版とな。 開発環境はWinマシンだからデフォルトがMS932なわけね。で、ファイル読み込みとか書き込みのときに文字コード指定してないからこのMS932で読んじゃってるわけかあ。 なるほど。。 つまりこれをUTF-8にすればいいわけね。 やっちゃおう。やってみますよ。 読み込む時に文字コードを指定する うちのはcsvファイルを入力するです。 txtとかバイナリファイルなら↓のやり方で大丈夫だって。 文字コードを指定しなくていいならFileReader これまでこんな風に読み込んでました。 BufferedReader inFile = new BufferedReader(new FileReader(filename.csv)); 読む時はこんな。例外は省略 while (inFile.ready()) { System.out.println(inFile.readLine()); } inFile.close(); 文字コードを指定するならInputStreamReader 今回使うのはこれこれ。 InputStreamReader(Stream,文字コード) とほほさんのページ>http //www.tohoho-web.com/java/file.htm#InputStreamReader これはバイトストリーム(Stream)を指定しないといかんのでFileInputStreamを作ってファイル名を指定。それを使います。 とほほさんのページ>http //www.tohoho-web.com/java/file.htm#FileInputStream InputStreamReader isr = new InputStreamReader(new FileInputStream(filename.csv),"UTF-8")); これで文字コードは指定できた。 実際にはこんな風に使ってみた ああでも1行ずつ読み込んでくれてるってのは生かしたい。上のままだと読むだけ。 じゃあBufferedReaderを残してFileReaderの代わりにInputStreamReaderを使ってみましたよ。どうよ? BufferedReader inFile = new BufferedReader(new InputStreamReader(new FileInputStream(filename.txt),"UTF-8")); ラップしまくりでわかんないですね。 これと同じ意味 FileInputStream fis = new FileInputStream(filename.txt); InputStreamReader in = new InputStreamReader(fis,"UTF-8"); BufferedReader inFile = new BufferedReader(in); BufferdReaderでラップしたので1行ずつ読み込んでくれました。 使い方は最初のときと同じ。変わったのはFileRearderがInputStreamRearderにしただけ。 書き込む時に文字コードを指定する やはりcsvファイルとして書き込むです。 文字コードを指定しなくていいなら これまでこんな風に書き込んでました。 PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter(new File(filename.csv).getAbsolutePath()))); 書く時はこんな。例外は省略 for (int i = 0 ; i 10 ; i++) { outFile.println("これで,おっけー?," + i + "回目" ); } outFile.close(); 文字コードを指定するならOutputStreamWriter 今回使うのはこれこれ。 OutputStreamWriter(Stream,文字コード) 読み込みの時と似てるね。 やっぱりFileOutputStreamを作ってファイル名を指定。 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(filename.csv),"UTF-8"); これで文字コードは指定できた。 実際にはこんな風に使ってみた やっぱ1行ずつ書き込むのって生かしたい。 じゃあBufferedWriterを残してFileWriterの代わりにOutputStreamWriterを使ってみましたよ。どうよ? PrintWriter outFile = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename.csv),"UTF-8"))); ラップしまくりでわかんないですね。 使い方は最初のときと同じ。変わったのはFileWriterがOutputStreamWriterにしただけ。
https://w.atwiki.jp/hama170628/pages/37.html
test_tableの内容をCSVで表示し保存する。 set echo off set heading off set termout off set pause off set pagesize 0 set linesize 300 set feedback 80 set colsep , spool c \temp\test.log select * from test_table order by aaa,bbb; spool off